# 1、在程序中发起对页面的请求
# 2、拿到主页信息
# 3、对主页信息进行解析
# 4、解析后拿到详情页的路径地址
# 5、对详情页的地址进行请求
# 6、拿到详情页的图片
# 7、保存图片到本地
import requests
# 对页面解析需要用到beautifulSoup库，第一次使用需要进行安装
# pip install beautifulsoup4
from bs4 import BeautifulSoup
# 请求频率不要过高，可以通过休眠进行处理
import time
# 声明需要请求的路径地址
url="https://www.umei.cc/weimeitupian/yijingtupian/"
# 发起请求
resp=requests.get(url)
# 解决中文乱码问题
resp.encoding="utf-8"
# 将爬取下来的内容进行保存在main_page的变量中
main_page=resp.text
# print(main_page)
# 使用BeautifulSoup对页面进行解析，需要将要解析的内容传递给BeautifulSoup
# html.parser表示告诉BeautifulSoup将传递进去的内容以html的方式进行转义
bs=BeautifulSoup(main_page,"html.parser")
# bs4中常见的方法有两个
# find表示找到一个标签内容
# find_all表示找到一组标签

# 先找到每个盒子的父类标签进行定位<div class="item_list infinite_scroll" id="infinite_scroll">
# bs.find("div",class_="item_list infinite_scroll")表示定位class属性为item_list infinite_scroll的div
# find_all("a")定位父节点下的所有a标签
# 使用set进行转换，去掉所有重复的链接
alst=set(bs.find("div",class_="item_list infinite_scroll").find_all("a"))
for item in alst:
    # get方法可以获取标签的指定属性值
    # 对详情页路径进行拼接
    child_url="https://www.umei.cc"+item.get("href")
    # 对详情页进行请求,获取详情页的内容
    child_page=requests.get(child_url).text
    # 对详情页进行解析
    child_bs=BeautifulSoup(child_page,"html.parser")
    # <div class="big-pic"><a href=""><img alt="" src="https://www.umei.cc/d/file/20230914/1d17abbd5ea26eeccebccf8e3fa28793.jpg" /></a></div>
    # 通过定位到img标签的父节点元素，找到img标签
    # attrs表示属性，可以通过具体的属性进行定位元素
    child_img=child_bs.find("div",attrs={"class":"big-pic"}).find("img")
    # 拿到图片的路径地址
    child_img_src=child_img.get("src")
    # 对图片进行请求 requests.get(child_img_src)
    # 调用响应的.content属性，获取二进制的字节码内容
    img_context=requests.get(child_img_src).content
    # split方法表示对字符串按照指定的字符进行切割
    # [-1]表示切片，-1为拿到列表中的最后一个元素
    img_name=child_img_src.split("/")[-1]
#     保存图片
    open("img\\"+img_name,"wb").write(img_context)
    print("{}已经下载完毕".format(img_name))
    # time.sleep(1)每个1秒进行请求一次，避免请求频率过高
    time.sleep(1)


